import axios from "axios";
//引入进度条
import Nprogress from "nprogress";
//引入进度条样式
import 'nprogress/nprogress.css'
import { BASE_URL, TIMEOUT } from "./config";
import router from "../router/index"

//利用axios对象的方法create，去创建一个axios实例
const gpt = axios.create({
  //基础路径
  baseURL:"https://oa.api2d.net",
  //请求超时时间   （5s内没响应就失败了）
  timeout:TIMEOUT
})

//请求拦截器
//axios实例的拦截器的request请求使用配置对象，返回配置对象
gpt.interceptors.request.use((config)=>{
  //进度条开始
  // if (config.method == 'get') {
  //   config.headers['Content-Type'] = 'application/json'
  //   }
  //   else {
  //   config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  // }
  if(localStorage.getItem('user')!=null && config.headers.OPENID === undefined) {
      config.headers.OPENID = localStorage.getItem('user')
   }
  Nprogress.start()
  //请求成功的返回配置对象
  return config
},(error)=>{
  //请求失败的返回，后面的then或者catch回调随便写不写
  return Promise.reject(error)
})

//响应拦截器
gpt.interceptors.response.use((response)=>{
  var url = response.request.responseURL
  //进度条结束
  if(response.data.code==300){
    router.push({
      path:"/404"
    })
    return
  }else if(response.data.code!=200
            && url.slice(url.indexOf('n/') + 1) != '/api/coupon/get_coupon'
            && url.slice(url.indexOf('n/') + 1) != '/api/index/get_login_status'

            ){
    // router.push({
    //   path:"/404?code=" + response.data.code + '&msg=' + response.data.msg
    // })
    // alert(response.data.msg)
  }
  Nprogress.done()
  //响应成功的返回
  return response
},(error)=>{
  Nprogress.done()
  //响应失败的返回
  return Promise.reject(error)
})

//导出axios实例
export default ({ url, method = 'GET', params = {}, data = {}, headers = {} }) => {
  return gpt({
    url,
    method,
    params,
    data,
    headers
  })
}
